package com.lvkedu.dataforward.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class SignUtil {
    /**
     *将提供的设备ID、时间戳和加密密钥按照字典顺序拼接在一起，然后对拼接后的字符串进行 MD5 加密，生成最终的密钥
     * @param deviceId 设备id
     * @param timestamp 时间戳
     * @param encryptionKey 加密密钥
     * @return 最终密钥
     * 若encryptionKey为空，直接返回空；否则进行加密返还最终密钥
     */
    public static String generateKey(String deviceId, String timestamp, String encryptionKey) {
        if (StringUtils.isEmpty(encryptionKey)) return "";

        String result = "";
        List<String> paramList = new ArrayList<>();
        paramList.add(deviceId);
        paramList.add(timestamp);
        paramList.add(encryptionKey);
        Collections.sort(paramList, String::compareTo);//按字典顺序进行排序
        for (String param : paramList) {//重新拼接
            result += param;
        }
        return MD5Util.md5(result);//对拼接结果加密
    }
}
